import { filterNullFields } from '@/utils/fomatter';
import httpService from '../httpService';



/**
 * 查询基金池列表
 * @param fund_category 基金类型
 * @param fund_mgr_type 成立年限
 * @param operation_status 运作状态
 * @param fund_size_type 基金规模
 * @param policy_type  策略类型
 * @param begin_date_ts  开始时间
 * @param end_date_ts  结束时间
 * @param offset  开始的位置
 * @returns 
 */
function queryFundPool({ fund_category, fund_mgr_type, operation_status, fund_size_type, policy_type, begin_date_ts, end_date_ts, offset }) {
    var params = {
        'fund_category': fund_category,
        'fund_mgr_type': fund_mgr_type ?? 0,
        'operation_status': operation_status,
        'fund_size_type': fund_size_type,
        'policy_type': policy_type,
        'begin_date_ts': begin_date_ts,
        "end_date_ts": end_date_ts,
        'limit': 20,
        'offset': offset
    };
    var filteredParams = filterNullFields(params)
    return httpService.get(`/fund_pool/query`, filteredParams)
}

/**
 * 获取基金池基金详情
 * @param fund_id 基金id
 * @returns 
 */
function getFundPoolDetail(fund_id) {
    var params = { 'fund_id': fund_id }
    return httpService.get(`/fund_pool/get/detail`, params)
}


/**
 * 根据名称查询基金池
 * @param fund_name 基金名称
 * @returns 
 */
function searchFundPoolFormName(fund_name) {
    var params = { 'fund_name': fund_name }
    return httpService.get(`/fund_pool/query/name`, params)
}


/**
 * 获取管理人详情
 * @param manager_no 管理人no
 * @returns 
 */
function getAmacManagerDetail(manager_no) {
    var params = { 'manager_no': manager_no }
    return httpService.get(`/amac/get/manager`, params)
}

/**
 * 提交反馈
 * @param feedback_type 反馈类型，1-缺少产品，2-缺少净值
 * @param fund_code 编码
 * @param fund_name 名称
 * @returns 
 */
function submitFundFeedback({ feedback_type, fund_code, fund_name }) {
    var params = { 'feedback_type': feedback_type, 'fund_code': fund_code, 'fund_name': fund_name }
    return httpService.post(`/feedback/submit`, params)
}

/**
 * 根据产品编号查询报告
 * @param fund_no 编码
 * @returns 
 */
function queryFundReport(fund_no) {
    var params = { 'fund_no': fund_no }
    return httpService.get(`/observation_pool/report/query_fund`, params)
}


/**
 * 查询指定天数的净值并查询对应时间段的产品指标
 * @param fund_id 基金id
 * @param query_num 查询年数: 查询天数: 30 近1个月 90 近3个月 180 近半年 365 近1年
 * @returns 
 */
function queryFundPoolNetMetricsAndIndex(fund_id, query_num = 30) {
    var params = { 'fund_id': fund_id, 'query_num': query_num }
    return httpService.get(`/fund_pool/net/net_metrics/query`, params)
}

/**
 * 查询产品指标
 * @param fund_id 基金id
 * @param query_num 查询年数: 1 3 5 99
 * @returns 
 */
function queryFundPoolNetMetrics(fund_id, query_num = 1) {
    var params = { 'fund_id': fund_id, 'query_num': query_num }
    return httpService.get(`/fund_pool/net/metrics/query`, params)
}

/**
 * 查询产品历史净值
 * @param fund_id 基金id
 * @returns 
 */
function queryFundPoolHistory(fund_id, offset) {
    var params = {
        'fund_id': fund_id, 'limit': 20,
        'offset': offset,
    }
    return httpService.get(`/fund_pool/net/history/query`, params)
}

/**
 * 查询产品三年内是否存在净值
 * @param fund_id 基金id
 * @returns 
 */
function queryFundPoolNetExist(fund_id) {
    var params = { 'fund_id': fund_id }
    return httpService.get(`/fund_pool/net/net_exist/get`, params)
}

/**
 * 查询净值比对指数
 * @param index_type 编码
 * @param fund_id 基金编号
 * @param query_num 查询年数: 查询天数: 30 近1个月 90 近3个月 180 近半年 365 近1年
 * @returns 
 */
function queryFundPoolNetIndex({ index_type, fund_id, query_num }) {
    var params = { 'index_type': index_type, 'fund_id': fund_id, 'query_num': query_num }
    return httpService.get(`/fund_pool/net/index/query`, params)
}


/**
 * 查询基金观察池报告
 * @param fund_no 基金编号
 * @param offset 
 * @returns 
 */
function queryFundObservationPoolList(fund_no, offset = 0) {
    var params = { 'fund_no': fund_no, 'offset': offset, 'limit': 20 }
    return httpService.get(`/observation_pool/report/query_fund`, params)
}

export {
    queryFundPool,
    getFundPoolDetail,
    searchFundPoolFormName,
    getAmacManagerDetail,
    submitFundFeedback,
    queryFundReport,
    queryFundPoolNetMetricsAndIndex,
    queryFundPoolNetMetrics,
    queryFundPoolHistory,
    queryFundPoolNetExist,
    queryFundPoolNetIndex,
    queryFundObservationPoolList,
}

